CC = gcc
LEX = flex
YACC = bison
EXEC = clausspilator

SRC_YACC = $(EXEC).tab.c $(EXEC).tab.h
SRC_LEX = $(EXEC).yy.c
SRC_OTHER = table_symboles.c table_symboles.h fonctions.c fonctions.h

OBJ = $(EXEC).yy.o $(EXEC).tab.o

all : $(EXEC)

$(EXEC) : $(SRC_YACC) $(SRC_LEX) $(SRC_OTHER)
	$(CC) -o $@ $^ -lfl

$(SRC_YACC) : $(EXEC).y
	bison -v -d $(EXEC).y

$(SRC_LEX) : $(EXEC).l
	lex -t $(EXEC).l >$(SRC_LEX)

%.o : %.c
	$(CC) -c $< -o $*.o

debug: $(SRC_YACC) $(SRC_LEX) $(SRC_OTHER)
	$(CC) -DDEBUG -o $(EXEC) $^ -lfl

tests: all
	./compile_exemple

clean:
	rm -f $(SRC_YACC) $(SRC_LEX) $(OBJ) *.output ./test/*.s

mrproper: clean
	rm -f $(EXEC)

